#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：turbo 
@File    ：handlers.py
@Author  ：赵加响
@Date    ：2024/6/26 18:16 
@Desc    ：
"""
import datetime
import calendar


def generate_date_range(year=None, month=None):
    if year is None:
        year = datetime.datetime.now().year

    dates_list = []

    if month is None:
        for month in range(1, 13):
            # 获取每个月的天数
            _, num_days = calendar.monthrange(year, month)
            # 添加这个月的每一天到列表中
            for day in range(1, num_days + 1):
                dates_list.append(datetime.date(year, month, day))

        return dates_list
    else:
        _, num_days = calendar.monthrange(year, month)
        # 添加这个月的每一天到列表中
        for day in range(1, num_days + 1):
            dates_list.append(datetime.date(year, month, day))
        return dates_list


def get_weekday_index(date_str):
    """
    根据日期字符串获取该日期在一周中的索引，从0到6对应周一到周日
    @param date_str: 字符串日期
    @return:
    """
    date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')

    # 使用 calendar 模块的 weekday() 函数来获取星期几的整数表示
    weekday_index = calendar.weekday(date_obj.year, date_obj.month, date_obj.day)

    return weekday_index


def is_holiday(holiday, date_str):
    """
    根据日期判断当前日期是否是假期
    @param holiday: CalendarType中的holiday
    @param date_str: 字符串日期
    @return:
    """
    index = get_weekday_index(date_str)
    holiday_list = [char for char in holiday]
    return holiday_list[index] == 'Y'
